SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[SP_TTAMAR_OPAN_D01]  
/*-------------------------------------------------------*/        
/*---Empresa              : OFISIS S.A.                --*/        
/*---Cliente              : OFISIS S.A.                --*/        
/*---Sistema              : Tesoreria                  --*/        
/*---M¸dulo               : Empresa                    --*/        
/*---Programa             : Anulaci©n O/C con Facturas --*/        
/*---Script               : ttamar_o.sql               --*/        
/*---Nombre SP            : SP_TTAMAR_OPAN_D01         --*/        
/*---Desarrollado por     : Javier Flores A.           --*/        
/*---Fecha Creaci¸n       : 10/06/1999                 --*/        
/*---Base Datos           : Microsoft Sql Server       --*/        
/*---Versi¸n              : 7.0                        --*/        
/*---Invoca a SP          :                            --*/        
/*-------------------------------------------------------*/        
        
/*-------------------------------------------------------*/      
/*---Modificado 1 por     : Maribel Julca Rodriguez    --*/      
/*---Fecha Modificaci©n   : 21/04/2005                 --*/       
/*---Detalle Modificaci©n : ingreso de los campos CO_USUA_CREA, CO_USUA_MODI  --*/      
/*-------------------------------------------------------*/      
        
/*-------------------------------------------------------*/        
/*---Comentarios                                       --*/        
/*---                                                  --*/        
/*---                                                  --*/        
/*-------------------------------------------------------*/        
        
/*-------------------------------------------------------*/        
/*---Drop Proc SP_TTAMAR_OPAN_D01                 --*/        
/*---Grant all on SP_TTAMAR_OPAN_D01 to public    --*/         
/*---SP_TTAMAR_OPAN_D01                           --*/        
/*-------------------------------------------------------*/        
 @ISCO_EMPR        TD_VC_002,         
 @ISCO_USUA_MODI   TD_VC_008_USUA,        
 @ISCO_UNID_CONC   TD_VC_003,      
 @ISNU_AMAR        TD_VC_008,        
 @IDFE_AMAR        TD_DT_001,        
 @ISCO_PROV        TD_VC_020,        
 @ISCO_TIPO_OPER   TD_VC_003,        
 @IDFE_ANUL        TD_DT_001  
 As  
DECLARE @CSTI_DOCU_DEST TD_VC_003,      
         @CSNU_DOCU_DEST TD_VC_020,      
         @CSCO_ENTI  TD_VC_020,      
         @CNIM_PAGA_DEST TD_NU_016_004,         
         @VNIM_TOTA_DOCU TD_NU_016_004,         
         @CSTI_DOCU_ORIG TD_VC_003,         
         @CSNU_DOCU_ORIG TD_VC_020,          
         @VNIM_PAGA      TD_NU_016_004,      
         @VSCO_TIPO_EGAN TD_VC_003,         
         @VSST_GEAS_ANUL TD_VC_001,      
         @VSCO_TIPO_OPE1 TD_VC_003,  
      @OSNU_ASTO   TD_VC_010,  
      @VSST_INTE_BACH  TD_VC_001,  
      @VSST_ASTO_RESU  TD_VC_001,  
      @VSTI_OPNI_CARG  TD_VC_001,  
      @VSTI_OPNI_ABON  TD_VC_001,
       @CNIM_SALD_DEST TD_NU_016_004,
  @CSST_CIER_DOCU TD_VC_001       
          
        
  /***  LIBERA DOCUMENTOS  DESTINOS  ***/        
        
 BEGIN TRAN SP_TTAMAR_OPAN_D01        
        
     DECLARE CU_TTAMAR_OPAN_D01 CURSOR  FOR        
     SELECT CO_ENTI, CO_TIDO_DEST , NU_DOCU_DEST , IM_PAGO_DEST,IM_SALD_DEST,ST_CIER_DOCU        
     FROM   TDAMAR_OCPR        
     WHERE  CO_EMPR = @ISCO_EMPR      
     AND    CO_UNID_CONC = @ISCO_UNID_CONC      
     AND    NU_AMAR  = @ISNU_AMAR         
     AND    FE_AMAR  = @IDFE_AMAR         
     AND    CO_TIDO_ORIG is NULL         
     AND    NU_DOCU_ORIG is NULL            
        
     OPEN CU_TTAMAR_OPAN_D01        
     FETCH  CU_TTAMAR_OPAN_D01 INTO @CSCO_ENTI, @CSTI_DOCU_DEST , @CSNU_DOCU_DEST , @CNIM_PAGA_DEST,
     @CNIM_SALD_DEST,@CSST_CIER_DOCU          
        
     While (@@FETCH_STATUS = 0)        
       Begin        
         If (@@FETCH_STATUS < 0)        
            Begin        
              RAISERROR 20001 'FIN DE ARCHIVO'      
              CLOSE CU_TTAMAR_OPAN_D01        
          DEALLOCATE CU_TTAMAR_OPAN_D01        
              Return                    
            End        
        
IF @CSST_CIER_DOCU = 'S'
  BEGIN
    SELECT @CNIM_PAGA_DEST = @CNIM_SALD_DEST --- MIGUEL
  END


        Update TMDOCU_PROV     
        Set IM_PAGA = Isnull(IM_PAGA,0) - Isnull(@CNIM_PAGA_DEST,0) , CO_ESTA_DOCU = 'ACT',        
                      CO_USUA_MODI = @ISCO_USUA_MODI, FE_USUA_MODI = GETDATE()        
        Where CO_EMPR      = @ISCO_EMPR         
        And   CO_PROV      = @CSCO_ENTI         
        And   CO_TIPO_DOCU = @CSTI_DOCU_DEST         
        And   NU_DOCU_PROV = @CSNU_DOCU_DEST        
        
        If @@error <> 0        
           Begin        
            CLOSE CU_TTAMAR_OPAN_D01        
             DEALLOCATE CU_TTAMAR_OPAN_D01        
   Rollback Tran         
             Return        
           End        
        
        FETCH  CU_TTAMAR_OPAN_D01 INTO @CSCO_ENTI, @CSTI_DOCU_DEST , @CSNU_DOCU_DEST , @CNIM_PAGA_DEST,
        @CNIM_SALD_DEST,@CSST_CIER_DOCU         
     END         
        
     CLOSE CU_TTAMAR_OPAN_D01        
     DEALLOCATE CU_TTAMAR_OPAN_D01        
        
     /***  LIBERA DOCUMENTOS  ORIGENES  ***/        
        
     DECLARE CU_TTAMAR_OPAN_D01 CURSOR         
     FOR        
     SELECT CO_TIDO_ORIG , NU_DOCU_ORIG         
     FROM   TDAMAR_OCPR        
     WHERE  CO_EMPR = @ISCO_EMPR       
     AND    CO_UNID_CONC = @ISCO_UNID_CONC      
     AND    NU_AMAR  = @ISNU_AMAR          
     AND    FE_AMAR  = @IDFE_AMAR         
     AND    CO_TIDO_DEST is  NULL         
     AND    NU_DOCU_DEST is  NULL            
        
     OPEN CU_TTAMAR_OPAN_D01        
     FETCH  CU_TTAMAR_OPAN_D01 INTO @CSTI_DOCU_ORIG , @CSNU_DOCU_ORIG         
        
     While (@@FETCH_STATUS = 0)        
       Begin        
         If (@@FETCH_STATUS < 0)        
            Begin        
              RAISERROR 20001 'FIN DE ARCHIVO'      
              CLOSE  CU_TTAMAR_OPAN_D01        
              DEALLOCATE CU_TTAMAR_OPAN_D01        
              RETURN        
            End        
        
         SELECT @VNIM_TOTA_DOCU  = 0, @VNIM_PAGA = 0        
        
         SELECT @VNIM_TOTA_DOCU  = ISNULL(IM_TOTA,0), @VNIM_PAGA = ISNULL(IM_PAGA,0)        
         FROM TMDOCU_PROV         
         WHERE CO_EMPR = @ISCO_EMPR         
         AND CO_PROV = @ISCO_PROV         
         AND CO_TIPO_DOCU = @CSTI_DOCU_ORIG         
         AND NU_DOCU_PROV = @CSNU_DOCU_ORIG        
        
         IF @VNIM_TOTA_DOCU != @VNIM_PAGA        
            BEGIN               
              UPDATE TMDOCU_PROV         
              SET CO_USUA_MODI = @ISCO_USUA_MODI, FE_USUA_MODI = GETDATE()        
              WHERE CO_EMPR = @ISCO_EMPR         
              AND   CO_PROV = @ISCO_PROV         
              AND   CO_TIPO_DOCU = @CSTI_DOCU_ORIG         
              AND   NU_DOCU_PROV = @CSNU_DOCU_ORIG        
        
              If @@error <> 0        
                 Begin        
                   CLOSE CU_TTAMAR_OPAN_D01        
                   DEALLOCATE CU_TTAMAR_OPAN_D01        
                   rollback tran         
                   return        
                 End        
         END           
       FETCH  CU_TTAMAR_OPAN_D01 INTO @CSTI_DOCU_ORIG , @CSNU_DOCU_ORIG         
     END         
        
    CLOSE CU_TTAMAR_OPAN_D01        
    DEALLOCATE CU_TTAMAR_OPAN_D01        
        
    SELECT @VSCO_TIPO_EGAN = CO_TIPO_OPEG, @VSST_GEAS_ANUL = ST_GEAS_ANUL      
    FROM   TMPARA_TESO       
    WHERE  CO_EMPR = @ISCO_EMPR      
      
    If @VSST_GEAS_ANUL = 'N'      
       Select @VSCO_TIPO_OPE1 = @VSCO_TIPO_EGAN      
    Else          
      Select @VSCO_TIPO_OPE1 = @ISCO_TIPO_OPER       
  
 -- Si la Fecha de Anulacion es Mayor --E X T O R N O--  --  
If  @IDFE_AMAR < @IDFE_ANUL And Month( @IDFE_AMAR ) != Month( @IDFE_ANUL )  
     UPDATE TCAMAR_OCPR        
    SET TI_SITU = 'EXT', CO_TIPO_OPER = @VSCO_TIPO_OPE1,      
        CO_USUA_MODI = @ISCO_USUA_MODI, FE_USUA_MODI = GETDATE()        
    WHERE CO_EMPR = @ISCO_EMPR       
    AND    CO_UNID_CONC = @ISCO_UNID_CONC      
    AND   NU_AMAR = @ISNU_AMAR           
    AND   FE_AMAR = @IDFE_AMAR        
  
Else  
     UPDATE TCAMAR_OCPR        
    SET TI_SITU = 'ANU', CO_TIPO_OPER = @VSCO_TIPO_OPE1,      
        CO_USUA_MODI = @ISCO_USUA_MODI, FE_USUA_MODI = GETDATE()        
    WHERE CO_EMPR = @ISCO_EMPR       
    AND    CO_UNID_CONC = @ISCO_UNID_CONC      
    AND   NU_AMAR = @ISNU_AMAR           
    AND   FE_AMAR = @IDFE_AMAR        
  
If @@error <> 0    
Begin    
 RollBack Tran SP_TTAMAR_OPAN_D01  
 Return    
End    
  
/**-----Verifica si es interface en Linea s/n------*/  
Select @VSST_INTE_BACH = ST_INTE_BACH,    
  @VSTI_OPNI_CARG = CO_TIPO_OPEG,   
        @VSTI_OPNI_ABON = CO_TIPO_OPER    
From TMPARA_TESO   
Where CO_EMPR = @ISCO_EMPR  
  
/**-----Verifica si se genera asientos Resumidos ------*/   
Select @VSST_ASTO_RESU = Max(IsNull( t1.ST_ASTO_RESU, 'S'))        
From   TMOPRC_RESU t1 , TDTIPO_OPER t2        
Where  t2.CO_EMPR = @ISCO_EMPR   
And    t2.CO_TIPO_OPER = @ISCO_TIPO_OPER   
And    t1.CO_EMPR = t2.CO_EMPR   
And    t1.CO_OPRC_CNTB = t2.CO_OPRC_CNTB  
  
/**-----Fin de la Validacion de Asientos Resumidos e Interfase en Bach ------*/   
If @VSST_INTE_BACH = 'N' AND @VSST_ASTO_RESU = 'N' AND   
 @ISCO_TIPO_OPER != @VSTI_OPNI_CARG AND @ISCO_TIPO_OPER != @VSTI_OPNI_ABON And  
 @IDFE_AMAR < @IDFE_ANUL And Month( @IDFE_AMAR ) != Month( @IDFE_ANUL )    
Begin  
    
 /*-----Optiene el Numero de Asiento -----*/      
 EXEC SP_TTULTI_ASTO_Q01 @ISCO_EMPR, @ISCO_USUA_MODI, @ISCO_UNID_CONC, @VSCO_TIPO_OPE1, @IDFE_ANUL, @OSNU_ASTO OUTPUT    
 IF (@@ERROR != 0)        
 Begin    
  RollBack Tran  SP_TTULTI_ASTO_Q01  
  RollBack Tran  SP_TTAMAR_OPAN_D01  
  Return    
 End    
  
End    
  
Insert into TTAMAR_OPAN (CO_EMPR, CO_UNID_CONC, NU_AMAR, FE_AMAR, CO_TIPO_OPER, FE_ANUL, ST_CONT, CO_USUA_CREA,FE_USUA_CREA,    
CO_USUA_MODI, FE_USUA_MODI, NU_ASTO)  
Values (@ISCO_EMPR, @ISCO_UNID_CONC, @ISNU_AMAR, @IDFE_AMAR, @VSCO_TIPO_OPE1, @IDFE_ANUL, 'N', @ISCO_USUA_MODI,GETDATE(),    
@ISCO_USUA_MODI, GETDATE(), @OSNU_ASTO)        
If @@error <> 0        
begin        
   rollback tran SP_TTAMAR_OPAN_D01  
   return        
end        
        
        
 COMMIT TRAN         
        
/*------------------------ Fin ------------------------------*/  
  

GO
